package com.letoo.dragon.core.service;

/**
 * 流水号生成器
 *
 * @author: dengjie
 * @date: 2014-03-17 15:53
 */
public interface CounterService {
    public enum KeyType {
        BG_ID , // bgId
        USER_ID ;// userId
    }

    /**
     * 返回指定类型的流水号 ,默认加1
     *
     * @param keyType
     *            流水号的类型
     * @return
     */
    Long nextCount(KeyType keyType);

    /**
     * 返回指定类型的流水号 ，步长为length值，而不是默认的1，如当前count值为1，length指定为10，则该方法返回的值为11
     *
     * @param keyType
     *            流水号的类型
     * @param length
     *            本次流水号取值的长度
     * @return
     */
    Long nextCountOfLength(KeyType keyType, int length);

    public Long nextCountByDb(KeyType keyType);

    public Long nextCountOfLengthByDb(KeyType keyType, int length);

    public Long nextCountForResetTypeByDb(KeyType keyType, int length);

}
